#pragma once

class IParticlesEmitterObject:
	public INode
{
public:
	IParticlesEmitterObject(const NodeCreation& nc);
	virtual ~IParticlesEmitterObject();

	/*-IObject------------------------------------------------------------------*/
	uint TreeCalc(uint arg);

	/*-IRenderModelMatrix-------------------------------------------------------*/
	void OnRender(const uint i, ERenderQuality::Type quality) ;

	/*--------------------------------------------------------------------------*/

	void CalculateParticlesMovement(float step);

	void SetDirection(const glm::vec3& direction);
	const glm::vec3& GetDirection() const;

	void SetStrength(const float& strength);
	const float& GetStrength() const;

	void SetSpread(const float& spread);
	const float& GetSpread() const;

	void SetFrequency(const float& freq);
	const float& GetFrequency() const;

private:
	std::vector<Particle> m_particles;

	float m_spread;
	glm::vec3 m_direction;
	float m_strength;
	float m_frequency;
};